// 判断两个数是否改变，改变返回true

// 正常可能想到直接 x!==y ，但是有几个情况需要考虑
// 1. -0 === +0 , 1/-0 =>-Infinity ,1/+0 =>Infinity
// 2. NaN 不能任何值，也就是 NaN===NaN为false ,Object.is(NaN,NaN) =true
function hasChange(x, y) {
  if (x === y) {
    // +0,-0 情况
    return x === 0 && 1 / x !== 1 / y;
  }

  // NaN情况，NaN才和任何数都不相等
  return x === x || y === y;
}

console.log("[  hasChange(0, 0); ] >", hasChange(0, 0));
console.log("[  hasChange(NaN, NaN); ] >", hasChange(NaN, NaN));
console.log("[  hasChange(-0, +0); ] >", hasChange(-0, +0));

// 对比Object.is()
// is判断两个数是否相等，NaN和NaN返回true, -0和+0返回false, 0和+0 true
function is(x, y) {
  if (x === y) {
    return x !== 0 || y !== 0 || 1 / x === 1 / y;
  }
  return x !== x && y !== y;
}
